home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload Trio 2
/
Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO
/
dir43
/
pxengn13.zip
/
PXENGIN2.RLZ
next >
Wrap
Text File
|
1992-02-10
|
16KB
|
547 lines
'**********************************************************************
' PxEngin2.RLZ Version: 1.3
' Realizer high-level Paradox Engine interface.
'
' Paradox(TM) Engine Interface for Realizer (TM).
' Paradox is a trademark of Borland International.
' REALIZER is a trademark of Within Technologies, Inc.
'
' Copyright ⌐ 1991, 1992 Within Technologies, Inc.
' All rights reserved.
'***********************************************************************
IF NOT(QVar(%%PXEngine, _Defined)) THEN
PDX_PXSHARED = 2 ' Open all tables with PREVENT FULL LOCK.
' Used in PXSrchFld, PXSrchKey.
PDX_SEARCHFIRST = 0 ' Search from beginning of table.
PDX_SEARCHNEXT = 1 ' Search from next record in table.
PDX_CLOSESTRECORD = 2 ' (modifier) goto 'nearest' record if no match found (ordered fields only).
PDX_PXSUCCESS = 0
PDX_PXERR_ENDOFTABLE = 101 ' End of table.
PDX_PXERR_STARTOFTABLE = 102 ' Start of table.
PDX_PXERR_RECNOTFOUND = 89 ' Record was not found.
EXTERNAL "PXEngWin.DLL" FUNC PXWinInit (POINTER clientName, INTEGER ShareMode) AS INTEGER ALIAS 84
EXTERNAL "PXEngWin.DLL" FUNC PXExit AS INTEGER ALIAS 4
EXTERNAL "PXEngWin.DLL" FUNC PXGetDefaults (POINTER swapSize, POINTER maxTables, POINTER maxRecBufs, POINTER MaxLocks, POINTER maxFiles, POINTER sortTable) AS INTEGER ALIAS 6
EXTERNAL "PXEngWin.DLL" FUNC PXTblOpen (POINTER tblName, POINTER ptblHandle, INTEGER indexID, INTEGER saveEveryChange) AS INTEGER ALIAS 8
EXTERNAL "PXEngWin.DLL" FUNC PXTblClose (WORD tblHandle) AS INTEGER ALIAS 9
EXTERNAL "PXEngWin.DLL" FUNC PXRecInsert (WORD tblHandle, WORD recHandle) AS INTEGER ALIAS 17
EXTERNAL "PXEngWin.DLL" FUNC PXRecUpdate (WORD tblHandle, WORD recHandle) AS INTEGER ALIAS 18
EXTERNAL "PXEngWin.DLL" FUNC PXRecDelete (WORD tblHandle) AS INTEGER ALIAS 41
EXTERNAL "PXEngWin.DLL" FUNC PXRecBufOpen (WORD tblHandle, POINTER precHandle) AS INTEGER ALIAS 19
EXTERNAL "PXEngWin.DLL" FUNC PXRecBufClose (WORD recHandle) AS INTEGER ALIAS 20
EXTERNAL "PXEngWin.DLL" FUNC PXRecBufEmpty (WORD recHandle) AS INTEGER ALIAS 21
EXTERNAL "PXEngWin.DLL" FUNC PXRecGet (WORD tblHandle, WORD recHandle) AS INTEGER ALIAS 23
EXTERNAL "PXEngWin.DLL" FUNC PXPutShort (WORD recHandle, WORD fldHandle, INTEGER value) AS INTEGER ALIAS 24
EXTERNAL "PXEngWin.DLL" FUNC PXPutDoub (WORD recHandle, WORD fldHandle, REAL value) AS INTEGER ALIAS 25
EXTERNAL "PXEngWin.DLL" FUNC PXPutLong (WORD recHandle, WORD fldHandle, LONG value) AS INTEGER ALIAS 26
EXTERNAL "PXEngWin.DLL" FUNC PXPutAlpha (WORD recHandle, WORD fldHandle, POINTER value) AS INTEGER ALIAS 27
EXTERNAL "PXEngWin.DLL" FUNC PXPutDate (WORD recHandle, WORD fldHandle, LONG value) AS INTEGER ALIAS 28
EXTERNAL "PXEngWin.DLL" FUNC PXPutBlank (WORD recHandle, WORD fldHandle) AS INTEGER ALIAS 29
EXTERNAL "PXEngWin.DLL" FUNC PXGetShort (WORD recHandle, WORD fldHandle, POINTER SValue) AS INTEGER ALIAS 30
EXTERNAL "PXEngWin.DLL" FUNC PXGetDoub (WORD recHandle, WORD fldHandle, POINTER DValue) AS INTEGER ALIAS 31
EXTERNAL "PXEngWin.DLL" FUNC PXGetLong (WORD recHandle, WORD fldHandle, POINTER LValue) AS INTEGER ALIAS 32
EXTERNAL "PXEngWin.DLL" FUNC PXGetAlpha (WORD recHandle, WORD fldHandle, INTEGER bufSize, POINTER dest) AS INTEGER ALIAS 33
EXTERNAL "PXEngWin.DLL" FUNC PXGetDate (WORD recHandle, WORD fldHandle, POINTER Date) AS INTEGER ALIAS 34
EXTERNAL "PXEngWin.DLL" FUNC PXFldBlank (WORD recHandle, WORD fldHandle, POINTER Blank) AS INTEGER ALIAS 35
EXTERNAL "PXEngWin.DLL" FUNC PXRecGoto (WORD tblHandle, LONG recNum) AS INTEGER ALIAS 36
EXTERNAL "PXEngWin.DLL" FUNC PXRecFirst (WORD tblHandle) AS INTEGER ALIAS 37
EXTERNAL "PXEngWin.DLL" FUNC PXRecLast (WORD tblHandle) AS INTEGER ALIAS 38
EXTERNAL "PXEngWin.DLL" FUNC PXRecNext (WORD tblHandle) AS INTEGER ALIAS 39
EXTERNAL "PXEngWin.DLL" FUNC PXRecPrev (WORD tblHandle) AS INTEGER ALIAS 40
EXTERNAL "PXEngWin.DLL" FUNC PXDateDecode (LONG date, POINTER mo, POINTER da, POINTER yr) AS INTEGER ALIAS 44
EXTERNAL "PXEngWin.DLL" FUNC PXDateEncode (INTEGER mo, INTEGER da, INTEGER yr, POINTER pdate) AS INTEGER ALIAS 45
EXTERNAL "PXEngWin.DLL" FUNC PXSrchFld (WORD tblHandle, WORD recHandle, WORD fldHandle, INTEGER mode) AS INTEGER ALIAS 47
EXTERNAL "PXEngWin.DLL" FUNC PXTblExist (POINTER tblName, POINTER Exist) AS INTEGER ALIAS 53
EXTERNAL "PXEngWin.DLL" FUNC PXRecNum (WORD tblHandle, POINTER precnum) AS INTEGER ALIAS 55
EXTERNAL "PXEngWin.DLL" FUNC PXTblNRecs (WORD tblHandle, POINTER pnRecs) AS INTEGER ALIAS 56
EXTERNAL "PXEngWin.DLL" FUNC PXRecNFlds (WORD tblHandle, POINTER nFlds) AS INTEGER ALIAS 57
EXTERNAL "PXEngWin.DLL" FUNC PXFldHandle (WORD tblHandle, POINTER fieldName, POINTER pfldHandle) AS INTEGER ALIAS 59
EXTERNAL "PXEngWin.DLL" FUNC PXFldType (WORD tblHandle, WORD fldHandle, INTEGER bufSize, POINTER fldType) AS INTEGER ALIAS 60
%%PXEngine = 1
END IF
%%FALSE = 0
%%TRUE = 1
' General purpose DBInter error number returned error anytime a Paradox error is caught by Error.
PDX_DBInterError = 1000
' Constants for GotoRecord recNumber parameter, any positive number is the actual record number.
PX_LastRecord = -10
PX_FirstRecord = -9
PX_NextRecord = -8
PX_PrevRecord = -7
RUN "StdSys"
RUN "StdMsgBx"
RUN "StdStrng"
PROC %%MBox(msg)
LOCAL junk
junk = MessageBox(msg, "Paradox Error", _MB_Ok)
END PROC
FUNC %%Error(err) 'Specific and general Paradox error messages.
SELECT CASE err
CASE 82
%%MBox("Paradox Engine already installed !")
CASE 97
%%MBox("Duplicate Key or other Key Violation")
CASE 134
%%MBox("SHARE must be run prior to running Paradox")
CASE ELSE
%%MBox("Unexpected Paradox error: " + NumToStr(err))
END SELECT
RETURN (err <> PDX_PXSUCCESS)
END FUNC
PROC SelectTable(entry)
%%curTbl = entry
%%curTblHnd = CVI(Mid$(%%tblHnd, 2 * %%curTbl - 1, 2))
%%curRecHnd = CVI(Mid$(%%recHnd, 2 * %%curTbl - 1, 2))
%%curFldType = %%fldType[entry]
END PROC
FUNC CurrentTable
RETURN (%%curTbl)
END FUNC
FUNC ParadoxInit
LOCAL err, swapSize, maxTables, maxRecBufs, maxLocks, maxFiles, sortTable
err = PXWinInit("RlzCust", PDX_PXSHARED) ' Initialize Paradox engine.
IF err THEN
Return (NOT(%%Error(err)))
END IF
swapSize = String$(2, " ")
maxTables = String$(2, " ")
maxRecBufs = String$(2, " ")
maxLocks = String$(2, " ")
maxFiles = String$(2, " ")
sortTable = String$(500, " ")
err = PXGetDefaults(swapSize, maxTables, maxRecBufs, maxLocks, maxFiles, sortTable)
IF err THEN
Return (NOT(%%Error(err)))
END IF
%%NumTables = CVI(maxTables)
IF %%NumTables = 0 THEN
Return (%%FALSE)
END IF
%%tblHnd = String$(2 * %%NumTables, 0)
%%recHnd = String$(2 * %%NumTables, 0)
%%tblList = String$(%%NumTables, "0")
%%curTbl = 0
Return (%%TRUE)
END FUNC
FUNC ParadoxExit
LOCAL err
err = PXExit
IF err THEN
Return (NOT(%%Error(err)))
ELSE
Return (%%TRUE)
END IF
END FUNC
FUNC OpenTable (tbl)
LOCAL exist, err, tableHandle, recordHandle, numFields, J
' Does the table exist?
exist = String$(2, 0)
err = PXTblExist(tbl, exist)
IF (err <> PDX_PXSUCCESS) OR NOT(CVI(exist)) THEN
%%MBox("The table " + tbl + " cannot be found (" + NumToStr(err) + ").")
Return (%%FALSE)
END IF
J = InStr(%%tblList, "0")
IF J THEN
%%tblList = SubStr$(%%tblList, "", "X", J, 1)
%%curTbl = J
ELSE
%%MBox("Too many tables are open.")
RETURN (%%FALSE)
END IF
tableHandle = String$(2, 0)
err = PXTblOpen(tbl, tableHandle, 0, 0)
IF (err <> PDX_PXSUCCESS) THEN
%%MBox("The table " + tbl + " cannot be openned (" + NumToStr(err) + ").")
Return (%%FALSE)
END IF
%%curTblHnd = CVI(tableHandle)
%%tblHnd = SubStr$(%%tblHnd, "", tableHandle, 2 * %%curTbl - 1, 2)
recordHandle = String$(2, 0)
err = PXRecBufOpen(%%curTblHnd, recordHandle)
IF err THEN
RETURN (NOT(%%Error(err)))
END IF
%%curRecHnd = CVI(recordHandle)
%%recHnd = SubStr$(%%recHnd, "", recordHandle, 2 * %%curTbl - 1, 2)
numFields = String$(2, 0)
err = PXRecNFlds(%%curTblHnd, numFields)
IF err <> PDX_PXSUCCESS THEN
Return (NOT(%%Error(err)))
END IF
%%curFldType = String$(CVI(numFields), " ")
%%fldType[%%curTbl] = %%curFldType
RETURN (%%TRUE)
END FUNC
FUNC CloseTable
LOCAL err
err = PXTblClose(%%curTblHnd)
IF err THEN
RETURN (NOT (%%Error(err)))
END IF
%%tblList = SubStr$(%%tblList, "", "0", %%curTbl, 1)
%%fldType[%%curTbl] = ""
%%curTbl = 0
%%curTblHnd = 0
%%curRecHnd = 0
%%curFldType = ""
RETURN (%%TRUE)
END FUNC
FUNC GetRecNumber
LOCAL recNumber, err
recNumber = String$(2, 0)
err = PXRecNum(%%curTblHnd, recNumber)
IF err THEN
err = %%Error(err)
RETURN (-1)
ELSE
RETURN (CVI(recNumber))
END IF
END FUNC
FUNC GotoRecord (recNumber)
LOCAL err
SELECT CASE recNumber
CASE PX_LastRecord
err = PXRecLast(%%curTblHnd)
CASE PX_FirstRecord
err = PXRecFirst(%%curTblHnd)
CASE PX_NextRecord
err = PXRecNext(%%curTblHnd)
IF err = PDX_PXERR_ENDOFTABLE THEN
RETURN(%%FALSE)
END IF
CASE PX_PrevRecord
err = PXRecPrev(%%curTblHnd)
IF err = PDX_PXERR_STARTOFTABLE THEN
RETURN(%%FALSE)
END IF
CASE ELSE
err = PXRecGoto(%%curTblHnd, recNumber)
END SELECT
IF err = PDX_PXSUCCESS THEN
Return (%%TRUE)
ELSE
Return (NOT(%%Error(err)))
END IF
END FUNC
FUNC %%GetFieldHandle (whichField)
LOCAL fldHandle, err
fldHandle = String$(2, 0)
err = PXfldHandle(%%curTblHnd, whichField, fldHandle)
IF err <> PDX_PXSUCCESS THEN
RETURN (NOT(%%Error(err)))
END IF
whichField = CVI(fldHandle)
Return (%%TRUE)
END FUNC
FUNC %%GetFieldType (whichField, fieldType)
LOCAL typeStr, err
typeStr = String$(5, 0)
err = PXFldType(%%curTblHnd, whichField, 5, typeStr)
IF err <> PDX_PXSUCCESS THEN
RETURN (NOT(%%Error(err)))
END IF
fieldType = Left$(typeStr, 1)
%%curFldType = SubStr$(%%curFldType, "", fieldType, whichField, 1)
Return (%%TRUE)
END FUNC
FUNC Search(whichField, what, searchHow)
LOCAL fieldType, fldHandle, err, tempRecHnd, done
IF QVar(whichField, _Alpha) THEN
IF NOT(%%GetFieldHandle(whichField)) THEN
Return (%%FALSE)
END IF
END IF
fieldType = Mid$(%%curFldType, whichField, 1)
IF fieldType = " " THEN
IF NOT(%%GetFieldType(whichField, fieldType)) THEN
Return (%%FALSE)
END IF
END IF
tempRecHnd = String$(2, 0)
err = PXRecBufOpen(%%curTblHnd, tempRecHnd)
IF err THEN
RETURN (NOT(%%Error(err)))
END IF
tempRecHnd = CVI(tempRecHnd)
SELECT CASE fieldType
CASE "A" ' Alpha
err = PXPutAlpha(tempRecHnd, whichField, what)
CASE "N", "$" ' Numeric
err = PXPutDoub(tempRecHnd, whichField, CVD(what))
CASE "S" ' 16 bit number
err = PXPutShort(tempRecHnd, whichField, CVI(what))
CASE "D" ' Date
dateBuff = String$(4, 0)
dInfo = DateInfo(what)
err = PXDateEncode(dInfo[_DI_Month], dInfo[_DI_DayOfMonth], dInfo[_DI_Year], what)
IF err = PDX_PXSUCCESS THEN
err = PXPutDate(tempRecHnd, whichField, CVL(dateBuff))
END IF
END SELECT
IF err <> PDX_PXSUCCESS THEN
RETURN (NOT(%%Error(err)))
END IF
err = PXSrchFld(%%curTblHnd, tempRecHnd, whichField, searchHow)
IF NOT err THEN
done = 1
ELSE
IF (err = PDX_PXERR_RECNOTFOUND) THEN
IF searchHow = PDX_SEARCHFIRST OR searchHow = PDX_SEARCHNEXT THEN
%%MBox("Field not found.")
done = 2
ELSE
done = 1
END IF
ELSEIF err = PDX_PXERR_ENDOFTABLE AND searchHow = PDX_CLOSESTRECORD THEN
%%MBox("Field not found.")
done = 2
ELSE
done = 3
END IF
END IF
err = PXRecBufClose(tempRecHnd)
IF err <> PDX_PXSUCCESS THEN
done = 3
END IF
IF done = 1 THEN
RETURN (%%TRUE)
ELSEIF done = 2 THEN
RETURN (%%FALSE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC GetRecord
LOCAL err
err = PXRecGet(%%curTblHnd, %%curRecHnd)
IF err <> PDX_PXSUCCESS THEN
RETURN (NOT(%%Error(err)))
ELSE
RETURN (%%TRUE)
END IF
END FUNC
FUNC NewRecord
LOCAL err
err = PXRecBufEmpty(%%curRecHnd)
IF err <> PDX_PXSUCCESS THEN
RETURN (NOT(%%Error(err)))
ELSE
RETURN (%%TRUE)
END IF
END FUNC
FUNC GetField (whichField, buff)
LOCAL fieldType, pxMonth, pxDay, pxYear, fldHandle, tmpStr, err
IF QVar(whichField, _Alpha) THEN
IF NOT(%%GetFieldHandle(whichField)) THEN
Return (%%FALSE)
END IF
END IF
fieldType = Mid$(%%curFldType, whichField, 1)
IF fieldType = " " THEN
IF NOT(%%GetFieldType(whichField, fieldType)) THEN
Return (%%FALSE)
END IF
END IF
SELECT CASE fieldType
CASE "A" ' Alpha
tmpStr = String$(255, " ")
err = PXGetAlpha(%%curRecHnd, whichField, Len(tmpStr), tmpStr)
IF err = PDX_PXSUCCESS THEN
buff = Left$(tmpStr, InStr(tmpStr, Chr$(0)) - 1)
END IF
CASE "N", "$" ' Numeric
tmpStr = String$(8, " ")
err = PXGetDoub(%%curRecHnd, whichField, tmpStr)
IF err = PDX_PXSUCCESS THEN
buff = CVD(tmpStr)
END IF
CASE "S" ' 16 bit number
tmpStr = String$(2, " ")
err = PXGetShort(%%curRecHnd, whichField, tmpStr)
IF err = PDX_PXSUCCESS THEN
buff = CVI(tmpStr)
END IF
CASE "D" ' Date
tmpStr = String$(4, " ")
err = PXGetDate(%%curRecHnd, whichField, tmpStr)
IF err = pDX_PXSUCCESS THEN
pxMonth = String$(2, 0)
pxDay = String$(2, 0)
pxYear = String$(2, 0)
err = PXDateDecode(CVL(tmpStr), pxMonth, pxDay, pxYear)
IF err = PDX_PXSUCCESS THEN
pxMonth = CVI(pxMonth)
pxDay = CVI(pxDay)
pxYear = CVI(pxYear)
buff = StrToDate(SPrint("##/##/####", pxMonth, pxDay, pxYear))
END IF
END IF
END SELECT
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC PutField (whichField, buff)
LOCAL fieldType, dateBuff, dInfo, fldHandle, err
IF QVar(whichField, _Alpha) THEN
IF NOT(%%GetFieldHandle(whichField)) THEN
Return (%%FALSE)
END IF
END IF
fieldType = Mid$(%%curFldType, whichField, 1)
IF fieldType = " " THEN
IF NOT(%%GetFieldType(whichField, fieldType)) THEN
Return (%%FALSE)
END IF
END IF
SELECT CASE fieldType
CASE "A" ' Alpha
err = PXPutAlpha(%%curRecHnd, whichField, buff)
CASE "N", "$" ' Numeric
err = PXPutDoub(%%curRecHnd, whichField, buff)
CASE "S" ' 16 bit number
err = PXPutShort(%%curRecHnd, whichField, buff)
CASE "D" ' Date
dateBuff = String$(4, 0)
dInfo = DateInfo(buff)
err = PXDateEncode(dInfo[_DI_Month], dInfo[_DI_DayOfMonth], dInfo[_DI_Year], dateBuff)
IF err = PDX_PXSUCCESS THEN
err = PXPutDate(%%curRecHnd, whichField, CVL(dateBuff))
END IF
END SELECT
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC BlankField (whichField)
LOCAL err
IF QVar(whichField, _Alpha) THEN
IF NOT(%%GetFieldHandle(whichField)) THEN
Return (%%FALSE)
END IF
END IF
err = PXPutBlank(%%curRecHnd, whichField)
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC IsBlankField (whichField)
LOCAL result, err
IF QVar(whichField, _Alpha) THEN
IF NOT(%%GetFieldHandle(whichField)) THEN
Return (%%FALSE)
END IF
END IF
err = PXFldBlank(%%curRecHnd, whichField, result)
IF err = PDX_PXSUCCESS THEN
RETURN (CVI(result))
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC InsertRecord
LOCAL err
err = PXRecInsert(%%curTblHnd, %%curRecHnd)
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC UpdateRecord
LOCAL err
err = PXRecUpdate(%%curTblHnd, %%curRecHnd)
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC
FUNC DeleteRecord
LOCAL err
err = PXRecDelete(%%curTblHnd)
IF err = PDX_PXSUCCESS THEN
RETURN (%%TRUE)
ELSE
RETURN (NOT(%%Error(err)))
END IF
END FUNC